<?php
////使用bindValue 函数，可以直接将表达式的值绑定到占位符上
//$db = new PDO('mysql:host=localhost; dbname=db3','root','12qwas');
//$ps=$db->prepare('select * from students limit ?'); //这里 ? 就是一个占位符
//$ps->bindValue('1','2',PDO::PARAM_INT);//第一个参数就是占位符的索引，从1开始
//$ps->execute(); //执行语句，这里就不用传递数组参数了
//foreach ($ps as $r){ //遍历结果集中的每条记录
//    echo "{$r['xh']}\t{$r['name']}\t{$r['age']}\n";
//}

//对于使用命名占位符的预处理语句，应是类似：形式的参数名。
//将变量的值绑定到占位符，在execute()被调用的时候才取绑定变量的值
//$db = new PDO('mysql:host=localhost; dbname=db3', 'root', '12qwas');
//$ps = $db->prepare('select * from students limit :offset,:length'); //使用命名占位符，以冒号：开始
//$ps->bindValue(':offset',$offset,PDO::PARAM_INT);//设置绑定占位符的值及类型
//$ps->bindValue(':length', $length, PDO::PARAM_INT);
//$offset=$length=1;
//$ps->execute();
//foreach ($ps as $r) {
//    echo "{$r['xh']}\t{$r['name']}\t{$r['age']}\n";
//}

//将变量绑定到一个查询结果集中给定的列，可通过列名或从1开始的列号进行绑定
$db = new PDO('mysql:host=localhost; dbname=db3', 'root', '12qwas');
$ps = $db->prepare('select * from students limit 1,2'); //使用命名占位符，以冒号：开始
$ps->bindColumn(1,$xh);//通过列号绑定，从1开始
$ps->bindColumn(2,$name);
$ps->bindColumn('age',$age,PDO::PARAM_INT);
$ps->execute();
foreach ($ps as $row) {
    echo "{$xh}\t{$name}\t{$age}\n";
}